package com.jpa.many.demo.test2.model;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Value;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@Data
@NoArgsConstructor
public class User {

    //设置主键并且设置自增
    /*
    * 同@Id 共同使用，标注主键的生成策略，通过strategy属性指定
        IDENTITY 采用数据库ID自增长的方式产生主键，oracle不支持
        AUTO JPA自动选择合适的策略，是默认选项
        SEQUENCE Oracle不支持主键自增长,其提供了一种叫做"序列(sequence)"的机制生成主键，
            GenerationType.SEQUENCE就可以作为主键生成策略，不足之处是只能使用于部分支持序列的数据库(Oracle,PostgreSQL,DB2)，
            一般与@SequenceGenerator一起使用,@SequenceGenerator注解指定了生成主键的序列，不指定序列时自动生成一个序列SEQ_GEN_SEQUENCE
        TABLE：通过表产生主键，框架借由表模拟序列产生主键，使用该策略更易于做数据库移植。
    */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

//    @Column(name = "user_name")
    private String userName;

//    @Column(name = "create_time")
    @CreationTimestamp
    private LocalDateTime createTime;

//    @Column(name = "update_time")
    @UpdateTimestamp
    private LocalDateTime updateTime;


    public User(String userName) {
        this.userName = userName;
    }
}
